home *** CD-ROM | disk | FTP | other *** search
-
- Beschreibung der Items im linearisierten Baum
-
- Stand : 27.12.93
-
-
- Das erste Byte der Kennung enthält acht Flag-Bits:
-
- Bit 7 benutzerdefiniertes Item (also kein Standard-Symbol)
- Bit 6 exportiertes Item
- Bit 5 importiertes Item
- Bit 4 bei Variablen: Externe Variable (feste Adresse)
- bei Procs, Consts (Typ 50): wird global exportiert (nur intern)
- Bit 3 bei lokalen Variablen: REF-/VAR-Parameter
- bei Procs: Parm-Übergabe auf A7
- Bit 2 Item ist ein Typ-Descriptor (gelöscht bei anonymen Typen)
- Bit 1 globales Item;
- Bit 0 bei Types: skalarer Typ;
- bei Variablen: schreibgeschützt (z.B. REF-Parameter)
- bei Prozeduren: Rückgabewert in D0 statt auf A3-Stack
-
- Das andere Byte gibt die Typ-Nr. des Items an.
-
- Aufbau der einzelnen Item-Beschreibungen:
-
- Art Typ-Nr.
- ------------------------------------------------------------------------------
- Relay | 0 | ^eigentliche Item-Beschreibung |
- LONGINT | 1 | Größe.L |
- LONGREAL | 2 | Größe.L |
- CHAR | 3 | Größe.L |
- ZZ *1 | 4 | Größe.L |
- SET OF ... *7| 5 | Größe.L | ^ElementTyp |
- Prozedur | 6 | Adr.L | ^1.Parameter | ^ResultTyp | ^letzte Ref |
- (Rest nur intern:) Länge.L | Adr.L |
- Parameter | 7 | ^nächster Parameter | ^ParamterTyp | VarPar.W *2 |
- Opaque *3 | 8 | Größe.L |
- Enumeration | 9 | Größe.L | Anzahl Elemente.L | ^1.Element |
- Enum-Element | 10 | OrdWert.W | ^Enum-Typ | ^nächstes Element |
- Subrange | 11 | Größe.L | Untergrenze.L | Obergrenze.L | ^BasisTyp |
- ARRAY ... | 12 | Größe.L | ^IndexTyp | ^ElementTyp |
- RECORD ... | 13 | Größe.L | ^erstes Feld | ^lok.Baum | Baum |
- RECORD-Feld | 14 | relAdr.L | ^Typ | ^nächstes Feld |
- Lok. Modul | 15 | ^Baum (bei Qual-Export) | Adr.L | dummy.L | dummy.L |
- ^letzte Ref | Länge.L | Adr.L |
- Qualifier | 16 | ^lok.Baum |
- Variable | 17 | Adr.L | ^VarTyp | ^letzte Ref | *6 VarFlags.B |
- UsedDepth.B | (Rest nur intern:) Länge.L | Adr.L |
- Konstante alt| 18 | ^Typ | Größe.W | Wert... (in Long-Portionen) |
- Prozedur-Typ | 19 | Größe.L | ^1.Parameter | ^ResultTyp |
- POINTER TO...| 20 | Größe.L | ^BasisTyp |
- WORD | 21 | Größe.L |
- LONGCARD | 22 | Größe.L |
- ADDRESS | 23 | Größe.L | ^BasisTyp |
- BOOLEAN | 24 | Größe.L |
- Opaque *4 | 25 | Größe.L |
- LONGWORD | 26 | Größe.L |
- String | 27 | Größe.L | Zeichenzahl.L |
- TABLE im Code| 28 | ...
- Asm-Label | 29 | ... (nur Compiler-intern verwendet)
- LongBoth | 30 | Größe.L |
- String-Const | 31 | Zeichenzahl.B | {char.B} |
- Open-Array | 32 | ^ElementTyp |
- INTEGER | 33 | Größe.L |
- CARDINAL | 34 | Größe.L |
- ShortBoth | 35 | Größe.L |
- Std-Funktion | 36 | F-Nr.W | (nur Compiler-intern verwendet)
- Std-F.-Parm | 37 | ... (nur Compiler-intern verwendet)
- BYTE | 38 | Größe.L |
- BYTE(signed) | 39 | Größe.L | (nur Compiler-intern verwendet)
- REAL | 40 | Größe.L |
- BITNUM | 41 | Größe.L |
- Long Open-Arr| 42 | ^ElementTyp |
- Any Type | 43 | Größe.L | (nur Compiler-intern verwendet)
- Proc-Typ *5 | 44 | Größe.L | ^Proc-Typ (m. Kennung 19) |
- SET OF ... *7| 45 | Größe.L | ^ElementTyp |
- Tag-Feld | 46 | ^Rec-Feld | Untergrenze.L | Obergrenze.L | ^nächstes Feld |
- REC-Variante | 47 | dummy.L | ^Typ | ^nächstes Feld | ^Rec-Feld | ^Tag-Liste |
- Forward | 48 | ...
- Konstante neu| 50 | Adr.L | ^Typ | ^letzte Ref | Größe.W | Wert (in Long-Portionen) |
-
- Anmerkungen:
-
- 1) Der Typ ZZ ist nur für ordinale Konstanten vorgesehen: Er umfaßt den
- Bereich von MIN (LONGINT) bis MAX (LONGCARD) und besteht deshalb aus 33
- signifikanten Bits.
- 2) Bit 8 gesetzt -> Parameter ist "VAR"-Parameter
- Bit 9 gesetzt -> Parameter ist "REF"-Parameter
- Bit 7 gesetzt -> Bit 0-5 sind Register-Nr, in der das Arg. zu übergeben ist.
- 3) Beschreibt einen im eigenen Modul definierten opaquen Typ (Compiler-intern).
- 4) Beschreibt einen ex-/importierten opaquen Typ.
- 5) Der Prozedur-Typ mit der Nr. 44 ist für value-Parameter vorgesehen,
- die auch eine Zuweisung von lokalen Prozeduren erlauben (Größe: 8 Byte)
- 6) "VarFlags" und "UsedDepth" sind nur im Compiler temporär vorhanden.
- Die Bits in VarFlags:
- Bit 7: Reg-Var; Bit 6: z.Zt. im Reg; Bit 5: dirty; Bit 0..4: Reg-Nr.
- In UsedDepth wird der tiefste Scope-Level aller Zugriffe gespeichert.
- 7) SETs m. Kennung 45 kommen nur bei Größen bis 32 Bit vor, während Kennung
- 5 für größere SETs oder bei $U- verwendet wird (andere Ordnung).
-
- * Die "Größe" gibt bei Types ihre Länge in Bytes an. Sie ist in der Regel
- konstant.
-
- * ".L" bedeutet einen Long-Wert (4 Byte), ".W" einen Word-Wert (2 Byte) und
- ".B" einen Byte-Wert.
-
- * Die mit "^" bezeichneten Einträge sind Word-Daten (2 Byte) und
- verweisen auf die Item-Nummer der zugehörigen Beschreibung.
-
- * Item-Nummern mit dem Wert "0" bedeuten, dass das betreffende Item nicht
- verwendet wird.
-